
#region license
/// Copyright (c) 2007 Rodrigo B. de Oliveira, Jb Evain and the
/// individuals listed on the ChangeLog entries.
/// 
/// Permission is hereby granted, free of charge, to any person obtaining
/// a copy of this software and associated documentation files (the
/// "Software"), to deal in the Software without restriction, including
/// without limitation the rights to use, copy, modify, merge, publish,
/// distribute, sublicense, and/or sell copies of the Software, and to
/// permit persons to whom the Software is furnished to do so, subject to
/// the following conditions:
/// 
/// The above copyright notice and this permission notice shall be
/// included in all copies or substantial portions of the Software.
/// 
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
/// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
/// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
/// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
/// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
/// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
/// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#endregion
//
// DO NOT EDIT THIS FILE!
//
// This file was generated automatically by astgen.boo.
//


namespace Milo.Ast
{
	using System;
	
	public interface IAstVisitor
	{
		void OnCompileUnit(CompileUnit node);
		void OnExplicitMemberInfo(ExplicitMemberInfo node);
		void OnSimpleTypeReference(SimpleTypeReference node);
		void OnArrayTypeReference(ArrayTypeReference node);
		void OnCallableTypeReference(CallableTypeReference node);
		void OnGenericTypeReference(GenericTypeReference node);
		void OnGenericTypeDefinitionReference(GenericTypeDefinitionReference node);
		void OnCallableDefinition(CallableDefinition node);
		void OnNamespaceDeclaration(NamespaceDeclaration node);
		void OnImport(Import node);
		void OnModule(Module node);
		void OnClassDefinition(ClassDefinition node);
		void OnStructDefinition(StructDefinition node);
		void OnInterfaceDefinition(InterfaceDefinition node);
		void OnEnumDefinition(EnumDefinition node);
		void OnEnumMember(EnumMember node);
		void OnField(Field node);
		void OnProperty(Property node);
		void OnEvent(Event node);
		void OnLocal(Local node);
		void OnBlockExpression(BlockExpression node);
		void OnMethod(Method node);
		void OnConstructor(Constructor node);
		void OnDestructor(Destructor node);
		void OnParameterDeclaration(ParameterDeclaration node);
		void OnGenericParameterDeclaration(GenericParameterDeclaration node);
		void OnDeclaration(Declaration node);
		void OnAttribute(Attribute node);
		void OnStatementModifier(StatementModifier node);
		void OnGotoStatement(GotoStatement node);
		void OnLabelStatement(LabelStatement node);
		void OnBlock(Block node);
		void OnDeclarationStatement(DeclarationStatement node);
		void OnMacroStatement(MacroStatement node);
		void OnTryStatement(TryStatement node);
		void OnExceptionHandler(ExceptionHandler node);
		void OnIfStatement(IfStatement node);
		void OnUnlessStatement(UnlessStatement node);
		void OnForStatement(ForStatement node);
		void OnWhileStatement(WhileStatement node);
		void OnBreakStatement(BreakStatement node);
		void OnContinueStatement(ContinueStatement node);
		void OnReturnStatement(ReturnStatement node);
		void OnYieldStatement(YieldStatement node);
		void OnRaiseStatement(RaiseStatement node);
		void OnUnpackStatement(UnpackStatement node);
		void OnExpressionStatement(ExpressionStatement node);
		void OnOmittedExpression(OmittedExpression node);
		void OnExpressionPair(ExpressionPair node);
		void OnMethodInvocationExpression(MethodInvocationExpression node);
		void OnUnaryExpression(UnaryExpression node);
		void OnBinaryExpression(BinaryExpression node);
		void OnConditionalExpression(ConditionalExpression node);
		void OnReferenceExpression(ReferenceExpression node);
		void OnMemberReferenceExpression(MemberReferenceExpression node);
		void OnGenericReferenceExpression(GenericReferenceExpression node);
		void OnSpliceExpression(SpliceExpression node);
		void OnCodeLiteralExpression(CodeLiteralExpression node);
		void OnStringLiteralExpression(StringLiteralExpression node);
		void OnCharLiteralExpression(CharLiteralExpression node);
		void OnTimeSpanLiteralExpression(TimeSpanLiteralExpression node);
		void OnIntegerLiteralExpression(IntegerLiteralExpression node);
		void OnDoubleLiteralExpression(DoubleLiteralExpression node);
		void OnNullLiteralExpression(NullLiteralExpression node);
		void OnSelfLiteralExpression(SelfLiteralExpression node);
		void OnSuperLiteralExpression(SuperLiteralExpression node);
		void OnBoolLiteralExpression(BoolLiteralExpression node);
		void OnRELiteralExpression(RELiteralExpression node);
		void OnExpressionInterpolationExpression(ExpressionInterpolationExpression node);
		void OnHashLiteralExpression(HashLiteralExpression node);
		void OnListLiteralExpression(ListLiteralExpression node);
		void OnArrayLiteralExpression(ArrayLiteralExpression node);
		void OnGeneratorExpression(GeneratorExpression node);
		void OnExtendedGeneratorExpression(ExtendedGeneratorExpression node);
		void OnSlice(Slice node);
		void OnSlicingExpression(SlicingExpression node);
		void OnTryCastExpression(TryCastExpression node);
		void OnCastExpression(CastExpression node);
		void OnTypeofExpression(TypeofExpression node);

	}
}

